package com.example.designpatterns.behavioral.state;

/**
 * 客户端代码（具体使用）
 *
 * @author scott
 */
public class Client {

    public static void main(String[] args) {
        Order order = new Order();

        // 在待支付状态下，可以取消订单和验证支付
        order.cancelOrder();
        order.verifyPayment();

        // 切换到已支付状态
        order.setState(new PaidState());

        // 在已支付状态下，可以取消订单和完成订单
        order.cancelOrder();
        order.completeOrder();

        // 切换到已完成状态
        order.setState(new CompletedState());

        // 在已完成状态下，只能验证支付，其他操作无效
        order.verifyPayment();
        order.completeOrder();
        order.cancelOrder();
    }

}
